package com.hiwan.system.common.base;

import java.io.Serializable;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import com.hiwan.framework.dao.annotation.LogRecord;
import com.hiwan.system.common.persistence.BasePojo;
import com.hiwan.system.util.PageUtil;


/**
 * 
 * Datetime   ： 2016年1月4日 下午2:12:17<br>
 * Title      :  GenericService.java<br>
 * Description:   通用服务<br>
 * Company    :  hiwan<br>
 * @author cbj
 *
 */
@Transactional
public abstract class GenericService<Dao extends GenericDao<T,PK>,T extends BasePojo,PK extends Serializable> extends BaseService {
	
	/**
	 * 持久层对象
	 */
	@Autowired
	protected Dao dao;
	
	/**
	 * 获取单条数据
	 * @param id
	 * @return
	 */
	public T get(PK pk) {
		return dao.selectOne(pk);
	}
	
	/**
	 * 获取单条数据
	 * @param entity
	 * @return
	 */
	public T get(T entity) {
		return dao.selectOne(entity);
	}
	
	/**
	 * 增加数据
	 * @param entity
	 * @return
	 */
	@LogRecord(title="新增日志")
	public int add(T entity){
		return dao.insert(entity);
	}
	
	/**
	 * 查询列表数据
	 * @param entity
	 * @return
	 */
	public List<T> findListPage(T entity) {
		return dao.selectListPage(entity,PageUtil.getRowBounds());
	}
	
	public List<T> findList(T entity) {
		return dao.selectList(entity);
	}
	
	/**
	 * 修改数据
	 * @param entity
	 * @return
	 */
	@LogRecord
	public int modify(T entity){
		return dao.update(entity);
	}
	
	/**
	 * 删除数据
	 * @param entity
	 */
	public int remove(T entity) {
		return dao.delete(entity);
	}
	
	/**
	 * 删除数据
	 * @param id
	 */
	public int remove(String id){
		return dao.delete(id);
	}
	

}
